package me.magicall.db.springjdbc;


/**
 * TableMeta们的缓存.
 * 
 * @author MaGiCalL
 */
//public class TableMetaHolder implements TableMetaAccessor, ReloadableCache, InitializingBean {
//
//	private final TableMetaAccessor tableMetaAccessor;
//	private final NamedParameterJdbcOperations jdbc;
//
//	private final String databaseName;
//	private final Map<String, TableMeta> tableMetas = new HashMap<String, TableMeta>();
//
//	public TableMetaHolder(final TableMetaAccessor tableMetaAccessor, final NamedParameterJdbcOperations jdbc, final String databaseName) {
//		super();
//		this.tableMetaAccessor = tableMetaAccessor;
//		this.jdbc = jdbc;
//		this.databaseName = databaseName;
//	}
//
//	private void build() {//FIXME:show tables is only for mysql,and it will show VIEWs too
//		final List<Map<String, Object>> list = jdbc.getJdbcOperations().queryForList("show tables from " + DbUtil.quoteDbName(databaseName));
//		for (final Map<String, Object> map : list) {
//			for (final Object o : map.values()) {
//				final String tableName = (String) o;
//				final TableMeta tableMeta = tableMetaAccessor.getTableMetaUsingTableName(databaseName + "." + tableName);
//				tableMetas.put(tableName, tableMeta);
//			}
//		}
//	}
//
//	@Override
//	public TableMeta getTableMetaIgnoreCase(final String modelName) {
//		for (final Entry<String, TableMeta> e : tableMetas.entrySet()) {
//			final String s = e.getKey();
//			if (s.equalsIgnoreCase(modelName) || s.equalsIgnoreCase(DbUtil.javaNameToDbName(modelName))) {
//				return e.getValue();
//			}
//		}
//		return null;
//	}
//
//	@Override
//	public TableMeta getTableMetaUsingModelName(final String modelName) {
//		return getTableMetaUsingTableName(DbUtil.javaNameToDbName(modelName));
//	}
//
//	@Override
//	public TableMeta getTableMetaUsingTableName(final String tableName) {
//		return tableMetas.get(tableName);
//	}
//
//	@Override
//	public void afterPropertiesSet() throws Exception {
//		build();
//	}
//
//	@Override
//	public void reload() {
//		build();
//	}
//
//	@Override
//	public void dropCache() {
//		tableMetas.clear();
//	}
//
//}
